#ifndef __HASH_SET_H__
#define __HASH_SET_H__
#include "hashMap/hashMap.h"

typedef struct hash_set_s
{
    hash_map_t map; // 底层哈希表
} hash_set_t;

/**
 * @brief 初始化哈希集合
 *
 * @param set 需要初始化的哈希集合
 * @param size 哈希集合大小
 * @return system_error_code_t 初始化结果
 */
system_error_code_t hash_set_init(hash_set_t *set, int size);

/**
 * @brief 向哈希集合中插入文件描述符
 * 
 * @param set 哈希集合
 * @param fd 文件描述符
 * @return system_error_code_t 插入结果
 */
system_error_code_t hash_set_put(hash_set_t *set, int fd);

/**
 * @brief 从哈希集合中移除指定文件描述符
 * 
 * @param set 哈希集合
 * @param fd 文件描述符
 * @return system_error_code_t 移除结果
 */
system_error_code_t hash_set_remove(hash_set_t *set, int fd);

/**
 * @brief 获取哈希集合中所有文件描述符
 * 
 * @param set 哈希集合
 * @param out_fds 文件描述符数组输出参数，调用者负责释放内存
 * @return system_error_code_t 获取结果
 */
system_error_code_t hash_set_get_all_fds(hash_set_t *set, int **out_fds);

/**
 * @brief 清空哈希集合
 * 
 * @param set 哈希集合
 * @return system_error_code_t 清空结果
 */
system_error_code_t hash_set_clear(hash_set_t *set);

#endif // __HASH_SET_H__